# 96. Excel地址
# https://www.lanqiao.cn/problems/93/learning/?page=1&first_category_id=1&second_category_id=3
# Date:2025/1/3
import math

"""
A 表示第 1 列，
B 表示第 2 列，
Z 表示第 26 列，
AA 表示第 27 列，
AB 表示第 28 列，
BA 表示第 53 列，
ZA 表示 26 * 26 + 1 列

"""

print(ord("A"))  # 65
print(chr(65))  # A
print(math.log(2147483647, 26))  # 6.59, 也就是说最大就是6位的26进制的数字
print("=" * 15)


def get_excel_addr(num: int):
    mult = num
    res = ""
    while mult > 0:
        a = mult % 26
        if a == 0:
            res += chr(26 + 64)
            mult -= 1
        else:
            res += chr(a + 64)
        mult = mult // 26
    return res[::-1]


print(get_excel_addr(1))  # A
print(get_excel_addr(26))  # Z
print(get_excel_addr(52))  # AZ
print(get_excel_addr(53))  # BA
print(get_excel_addr(27))  # AA
print(get_excel_addr(677))  # AAA
print(get_excel_addr(2147483647))  # FXSHRXW
